package com.bw.lib_common.base

import android.app.Application
import com.alibaba.android.arouter.BuildConfig
import com.alibaba.android.arouter.launcher.ARouter
import com.bw.lib_common.LoggerUtils
import com.bw.lib_log.crash.CrashHandler
import com.bw.lib_storage.db.DBUtils
import com.tencent.bugly.crashreport.CrashReport
import com.tencent.mmkv.MMKV

open  class BaseApplication:Application() {
    companion object {
        lateinit var instance: BaseApplication
    }
    override fun onCreate() {
        super.onCreate()
        instance = this
        initARouter()
        initBugLy()
        initCrash()
        initMMKV()
        initRoom()
        LoggerUtils.d("BaseApplication", "BaseApplication")
    }

    private fun initRoom() {
        DBUtils.init(this,"club.db")
    }

    fun initMMKV() {
        MMKV.initialize(this)
    }
    // 这两行必须写在 init 之前，否则这些配置在 init 过程中将无效

    fun initARouter(){
        if (BuildConfig.DEBUG) {
            // 打印日志，方便调试，不要在 Release 模式开启
            ARouter.openLog()
            // 开启调试模式（如果在 InstantRun 模式下运行，必须开启调试模式！）
            ARouter.openDebug()
        }
        // 初始化 ARouter
        ARouter.init(this)
    }

    fun initBugLy(){
        //bugly异常崩溃上报
        CrashReport.initCrashReport(this, "296902fb2c", true);
    }
    fun initCrash(){
        //Crash初始化
        CrashHandler.init(this)
    }



//    LoggerUtils.d(TAG,"初始化完成")
}